package leetcode.Fiftyone_to_One_hundred;

/**
 * 相同的树
 */
public class Test100 {

    public class TreeNode {
        int val;
        TreeNode left;
        TreeNode right;

        TreeNode(int x) {
            val = x;
        }
    }


    public boolean isSameTree(TreeNode p, TreeNode q) {
        return IsSameTree(p, q);
    }


    public static boolean IsSameTree(TreeNode root1, TreeNode root2) {
        // 允许两边在同样的位置同时为空
        if (root1 == null && root2 == null) {
            return true;
        }
        // 不允许两边在同样的位置不同时为空
        if ((root1 == null && root2 != null) || (root1 != null && root2 == null)) {
            return false;
        }
        // 不允许两边在同样的位置值不同
        if (root1.val != root2.val) {
            //判断每个节点的值是否相等，如果去除此判断，则判断两个二叉树是否结构相等
            return false;
        }
        // 先比对左子树，再比对右子树
        return IsSameTree(root1.left, root2.left) && IsSameTree(root1.right, root2.right);
    }
}
